/*
 * NamedTag.h
 *
 *  Created on: 18 juin 2011
 *      Author: Pierrick Caillon <pierrick@megami.fr>
 */

#ifndef NAMEDTAG_H_
#define NAMEDTAG_H_

#include "ITag.h"

namespace NamedBinaryTag
{
class TagString;

class NamedTag: public virtual NamedBinaryTag::ITag
{
private:
	TagString *name;
public:
	NamedTag();
	virtual ~NamedTag();

	std::string get_Name() const;
	void set_Name(std::string value);

	void Read(std::istream &input);
	void Write(std::ostream &output) const;

	virtual void Read(std::istream &input, bool ignoreName);
	virtual void Write(std::ostream &output, bool ignoreName) const;
protected:
	NamedTag(void *root) : ITag(root) {}
};

}

#endif /* NAMEDTAG_H_ */
